//package com.org.util;
//
//import com.auth0.jwt.JWT;
//import com.auth0.jwt.JWTVerifier;
//import com.auth0.jwt.algorithms.Algorithm;
//import com.auth0.jwt.interfaces.DecodedJWT;
//import com.org.constant.Params;
//import com.org.model.UserInfo;
//
//import java.util.Calendar;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * author: vane.Q
// * device: mac
// * date: 2022/11/13 14:19
// */
//public class JwtUtils {
//    // 签名密钥
//    private static final String SECRET = "!DAR$";
//
//    public static String getToken(UserInfo userInfo) {
//        Map<String , String> subject = new HashMap<>();
//        subject.put(Params.USER_ID, userInfo.getUserId());
//        subject.put(Params.USER_NAME, userInfo.getUserName());
//        Calendar instance = Calendar.getInstance();
//        // 半小时过期，每次过期时间接近10分钟，自动重新下发token
//        instance.add(Calendar.SECOND,1800);
//        Map<String, Object> header = new HashMap<>();
//        header.put("alg", "HS256");
//        header.put("typ","JWT");
//        return JWT.create().withHeader(header)
//                .withSubject(JsonUtils.objectToJsonString(subject))
//                // 这里使用guava的过期特性，不需要新的过期特性了
//              //  .withExpiresAt(instance.getTime())
//                .sign(Algorithm.HMAC256(SECRET));
//    }
//
//    /**
//     * 解析token
//     * @param token token字符串
//     * @return 解析后的token
//     */
//    public static String decode(String token){
//        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(SECRET)).build();
//        DecodedJWT decodedJWT = jwtVerifier.verify(token);
//        return decodedJWT.getSubject();
//    }
//}
